﻿using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Collections;
using System.Data;
using System.ComponentModel;
using System.Data.OracleClient;
namespace INTEX.DataBase.Tools
{
    public partial class INTEXDBC
    {
        public void MapLRPOS(ref DataRow dwLocal, DataRow dwData)
        {
            BlindMap(ref dwLocal, dwData);
        }
        public void SaveLRPOS(DataRow dwData, string ITXDBVERSION = "JLT")
        {
            DataSet setResult = new DataSet();
            DataTable tbLocal = null;
            DataRow dwLocal = null;
            bool flgExist = false;
            setResult = QueryLRPOS(dwData);
            if (setResult.Tables.Count > 0)
            {
                tbLocal = setResult.Tables[0];
                if (tbLocal.Rows.Count > 0)
                {
                    flgExist = true;
                    dwLocal = tbLocal.Rows[0];
                }
                else
                {
                    dwLocal = tbLocal.NewRow();
                }
            }

            MapLRPOS(ref dwLocal, dwData);

            if (!flgExist)
            {
                InserLRPOS(dwLocal);
                string apkrs = dwLocal["APZANRKRS"].ToString();
                string apdnr = dwLocal["APZALFDNR"].ToString();
                RefreshAPKOPF(apkrs, apdnr);
            }
            UpdateLRPOS(dwLocal);
        }
        public void InserLRPOS(DataRow dwData, string ITXDBVERSION = "50.24")
        {
            //APZMANDANT APZART APZVAR APZANRKRS APZALFDNR APZSTUFE
            OracleCommand or1;

            or1 = OracleDB.CreateCommand();
            or1.CommandText = "INSERT INTO LRPOS(APZMANDANT, APZKUNDNR, APZWERK, APZABT, APZART, APZVAR, APZANRKRS, APZALFDNR, APZSTUFE, APZSPEZIF, APZSPSTA, APZSPGRD, APZSTDKALK, APZZUSTAND, APZZUSATZ1, APZZUSATZKZ1, APZZUSATZ2, APZZUSATZKZ2, APZZUSATZ3, APZZUSATZKZ3, APZZUSATZ4, APZZUSATZKZ4, APZZUSATZ5, APZZUSATZKZ5, APZZUSATZ6, APZZUSATZKZ6, APZZUSATZ7, APZZUSATZKZ7, APZZUSATZ8, APZZUSATZKZ8, APZZUSATZ9, APZZUSATZKZ9, APZZUSATZ10, APZZUSATZKZ10, APZZUSATZ11, APZZUSATZKZ11, APZZUSATZ12, APZZUSATZKZ12, APZZUSATZ13, APZZUSATZKZ13, APZZUSATZ14, APZZUSATZKZ14, APZZUSATZ15, APZZUSATZKZ15, APZZUSATZ16, APZZUSATZKZ16, APZZUSATZ17, APZZUSATZKZ17, APZZUSATZ18, APZZUSATZKZ18, APZZUSATZ19, APZZUSATZKZ19, APZZUSATZ20, APZZUSATZKZ20, APZZUSATZ21, APZZUSATZKZ21, APZZUSATZ22, APZZUSATZKZ22, APZZUSATZ23, APZZUSATZKZ23, APZZUSATZ24, APZZUSATZKZ24, APZZUSATZ25, APZZUSATZKZ25, APZZUSATZ26, APZZUSATZKZ26, APZZUSATZ27, APZZUSATZKZ27, APZZUSATZ28, APZZUSATZKZ28, APZZUSATZ29, APZZUSATZKZ29, APZZUSATZ30, APZZUSATZKZ30, APZZUSATZ31, APZZUSATZKZ31, APZZUSATZ32, APZZUSATZKZ32, APZZUSATZ33, APZZUSATZKZ33, APZZUSATZ34, APZZUSATZKZ34, APZZUSATZ35, APZZUSATZKZ35, APZZUSATZ36, APZZUSATZKZ36, APZZUSATZ37, APZZUSATZKZ37, APZZUSATZ38, APZZUSATZKZ38, APZZUSATZ39, APZZUSATZKZ39, APZZUSATZ40, APZZUSATZKZ40, APZZUSATZ41, APZZUSATZKZ41, APZZUSATZ42, APZZUSATZKZ42, APZZUSATZ43, APZZUSATZKZ43, APZZUSATZ44, APZZUSATZKZ44, APZZUSATZ45, APZZUSATZKZ45, APZZUSATZ46, APZZUSATZKZ46, APZZUSATZ47, APZZUSATZKZ47, APZZUSATZ48, APZZUSATZKZ48, APZZUSATZ49, APZZUSATZKZ49, APZZUSATZ50, APZZUSATZKZ50, APZZANRKRS1, APZZALFDNR1, APZZAKZ1, APZZANRKRS2, APZZALFDNR2, APZZAKZ2, APZZANRKRS3, APZZALFDNR3, APZZAKZ3, APZZANRKRS4, APZZALFDNR4, APZZAKZ4, APZPRIO, APZAENDZL, APZAENDBEN, APZAENDDAT, APZNEUBEN, APZNEUDAT, APZFILLER)"
                + "VALUES (:APZMANDANT, '00000000', '   ', '   ', :APZART, :APZVAR, :APZANRKRS, :APZALFDNR, :APZSTUFE, '                                                  ', 'N', '                              ', 'N', '    ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '          ', '  ', '  ', '000000', ' ', '  ', '000000', ' ', '  ', '000000', ' ', '  ', '000000', ' ', '0', 0, '        ', 0, 'NILL    ', '20120811', '                                                 ')";
            or1.Parameters.Add("APZMANDANT", OracleType.NVarChar).Value = dwData["APZMANDANT"].ToString();
            or1.Parameters.Add("APZART", OracleType.NVarChar).Value = dwData["APZART"].ToString();
            or1.Parameters.Add("APZVAR", OracleType.NVarChar).Value = dwData["APZVAR"].ToString();
            or1.Parameters.Add("APZANRKRS", OracleType.NVarChar).Value = dwData["APZANRKRS"].ToString();
            or1.Parameters.Add("APZALFDNR", OracleType.NVarChar).Value = dwData["APZALFDNR"].ToString();
            or1.Parameters.Add("APZSTUFE", OracleType.NVarChar).Value = dwData["APZSTUFE"].ToString();
            setResult = Connect2Proxy(or1);
        } 
        public void UpdateLRPOS(DataRow dwData, string ITXDBVERSION = "50.24")
        {
            OracleCommand or1;
            or1 = OracleDB.CreateCommand(); 
            Connect2Proxy(or1);
        }
        public DataSet QueryLRPOS(DataRow dwData, int option = 1)
        {
            DataSet setReturn = new DataSet();
            DataSet Result = new DataSet();
            DataTable tbLocal = null;
            OracleCommand or1;
            // APZMANDANT  APZART APZVAR APZANRKRS APZALFDNR APZSTUFE

            or1 = OracleDB.CreateCommand();
            switch (option)
            {
                case 0:
                    or1.CommandText = "SELECT * FROM LRPOS WHERE  ROWNUM<2 ";
                    break;
                case 1: 
                    or1.CommandText = "SELECT * FROM LRPOS WHERE  "
                        + "  LRPMANDANT=:LRPMANDANT AND LRPREZART=:LRPREZART AND LRPREZNR=:LRPREZNR";
                    or1.Parameters.Add("LRPMANDANT", OracleType.NVarChar).Value = dwData["LRPMANDANT"].ToString();
                    or1.Parameters.Add("LRPREZART", OracleType.NVarChar).Value = dwData["LRPREZART"].ToString();
                    or1.Parameters.Add("LRPREZNR", OracleType.NVarChar).Value = dwData["LRPREZNR"].ToString(); 
                    break;
                case 2:
                    or1.CommandText = "SELECT DISTINCT ARAMANDANT,ARAAUFKRS,ARAAUFLFD,ARAAUFPOS,ARAANSNR,ARAMGKG,ARAFLOTTE,MSBEZ,R.* "
                    +" FROM LRPOS R "
                    +" RIGHT JOIN ARANS S ON R.LRPMANDANT=ARAMANDANT  AND	R.LRPREZART=S.ARAREZART AND R.LRPREZNR=ARAREZNR"
                    + " LEFT JOIN MSSTAMM M ON M.MSMAT=LRPKOMP"
                    +"  WHERE  "
                      + "  ARAMANDANT=:ARAMANDANT AND ARAAUFKRS=:ARAAUFKRS AND ARAAUFLFD=:ARAAUFLFD";
                      or1.Parameters.Add("ARAMANDANT", OracleType.NVarChar).Value = dwData["ARAMANDANT"].ToString();
                    or1.Parameters.Add("ARAAUFKRS", OracleType.NVarChar).Value = dwData["ARAAUFKRS"].ToString();
                    or1.Parameters.Add("ARAAUFLFD", OracleType.NVarChar).Value = dwData["ARAAUFLFD"].ToString();       
                    break;  
                default:
                    break; 
            } 
            Result = Connect2Proxy(or1);
            if (Result.Tables.Count > 0)
            {
                tbLocal = Result.Tables[0];
                tbLocal.TableName = "LRPOS";
            }
            setReturn.Merge(Result);
            return setReturn;
        }
    }
}
